Программа "Здравствуй Мир"
=======================================

.. index::
  Hello World


Первой программой, которую обычно показывают в большинстве книг по языкам программирования
является программа hello world. Эта очень  простая программа, которая просто пишет предложение "Привет, мир!"
и завершает работу. Эта программа весьма интересна, потому что она использует несколько  важных концепций языка D.

.. code-block:: d

  import std.stdio;

  void main()
  {
      writeln("Hello, World!");
  }




Приведенный выше исходный код, должен быть скомпилирован для получения исполняемого модуля.

Установка компилятора
------------------------

.. index::
  компилятор
  ldc
  gdc
  dmd
  ключевые слова
  установка компилятора
  Hello World


На момент написания этой главы на выбор было три общих компилятора:

#. dmd компилятор Digital Mars
#. gdc компилятор GCC
#. ldc компилятр, предназначенный для LLVM инфраструктуры

All of the examples in this book have been tested
with dmd. For that reason, it would be the easiest for you to start with dmd and try
other compilers only if you have a specific need to. The code samples in this book
were compiled with dmd version 2.098.1.

dmd - это компилятор, который использовался при проектировании и разработке
языка на протяжении многих лет. Все примеры в этой книге были протестированы
с помощью компилятора dmd. По этой причине рекомендуется начать работать с компилятолром dmd и пробовать
другие компиляторы только в том случае, если у вас есть в этом особая необходимость.
Примеры кода в этой книге были скомпилированы с использованием dmd версии 2.098.1.
Чтобы установить последнюю версию dmd, 
перейдите на страницу загрузки по адресу [Загрузка D](http://www.dlang.org/download.html>) и выберите сборку компилятора, соответствующую среде вашего компьютера.Вы должны выбрать сборку dmd, которая подходит для вашей операционной системы и системы управления пакетами,и независимо от того,какой у вас 32-разрядный или 64-разрядный процессор и операционная система. Не устанавливайте компилятор D1. В этой книге рассматривается только вторая версия D.
Шаги установки различны в разных средах, но это должно быть просто, следуйте простым инструкциям на экране.

Исходный файл
------------------

.. index::
  компилятор
  редактор текст


Файл, в который программист записывает текст программы для компиляции компилятором D, называется
исходном файлом. Поскольку D обычно используется в качестве компилируемого языка, исходный файл сам
по себе не является исполняемой программой. Исходный файл должен быть преобразован компилятором в исполняемую
программу. Как и у любого файла, у исходного файла должно быть имя. Хотя имя может быть
любым, разрешенным в файловой системе, принято использовать расширение файла .d
для исходных файлов на языке D, потому что среды разработки, инструменты программирования и
программисты ожидают, что это будет именно так. Например, test.d, game.d,
invoice.d и т.д. являются подходящими именами исходных файлов D.


Компиляция программы hello world
---------------------------------

.. index::
  компилятор
  редактор текст
  ключевые слова


Вы создадите исходный файл в текстовом редакторе (или IDE, как указано ниже).
Скопируйте или введите приведенную выше программу hello world в текстовый файл и сохраните его под
именем hello.d . Компилятор вскоре проверит правильность синтаксиса этого исходного кода (т.е.
он действителен в соответствии с правилами языка) и создаст из него программу, переведя ее в машинный код.

Выполните следующие действия для компиляции программы:
#. Откройте окно терминала.
#. Перейдите в каталог, в котором вы сохранили hello.d .
#. Введите следующую команду. (Не вводите символ $; он используется для указания приглашения командной строки.)

.. code-block:: console

  $ dmd hello.d

Если вы не допустили никакой ошибки, вы можете подумать, что ничего не произошло. Напротив, это означает,
что все прошло хорошо. Должен быть создан исполняемый файл с именем hello (или hello.exe под Windows),
Если компилятор вместо этого напечатал какие-то сообщения, вы, вероятно, допустили
ошибку при копировании программного кода. Попробуйте выявить ошибку, исправьте её,и повторите попытку компиляции.
Вы обычно допускаете много ошибок при программировании, поэтому процесс исправления и компиляции станет для вас привычным.
Как только программа будет успешно создана, введите название исполняемой программы, чтобы запустить ее.

.. code-block:: console

    $ ./hello
    $  "Hello World",

Вы должны увидеть, что программа выводит "Hello World"
Поздравляю! Ваша первая программа D работает так, как ожидалось.

Опции компилятора
--------------------------

У компилятора есть множество опций командной строки, которые используются для управления компиляцией программы.
Чтобы просмотреть список переключателей компилятора, введите только имя
компилятора:

.. code-block:: console

  $ dmd
  DDMD64 D Compiler v2.098.1
  ...
  -de
  ...
  -unittest
  ...
  -w
  ...

Приведенный выше сокращенный вывод показывает только параметры командной строки, которые я
рекомендую вам всегда использовать. Хотя в этой главе это не имеет никакого значения для программы hello
world, следующая командная строка скомпилирует
программу, включив модульные тесты и не допуская никаких предупреждений или устаревших
функций. Мы рассмотрим эти и другие переключатели подробнее в последующих главах:

.. code-block:: console

  $ dmd hello.d -de -w -unittest

Полный список переключателей командной строки dmd можно найти в документации по компилятору .
Еще один параметр командной строки, который может оказаться вам полезным, ‑run . Эта опция позволяет скомпилировать и сразу запустить
программу. Опция ‑run должена быть последней из параметров компилятора, указанных непосредственно перед
именем исходного файла:

.. code-block:: console

  $ dmd -de -w -unittest -run hello.d
  Hello World ← программа выполняется автоматически


IDE (интегрированная среда разработки)
--------------------------------------

В дополнение к компилятору вы также можете рассмотреть возможность установки IDE (интегрированной
среды разработки). IDE предназначены для облегчения разработки программ
за счет упрощения этапов написания, компиляции и отладки.
Если вы все-таки установите IDE, скомпилировать и запустить программу будет так же просто
, как нажать клавишу или кнопку в IDE. Я все же рекомендую вам
ознакомиться с компиляцией программ вручную в окне терминала.
Если вы решите установить IDE, перейдите на страницу IDE по адресу `IDE для D <http://wiki.dlang.org/IDEs>`_ dlang.org,
чтобы просмотреть список доступных IDE.


Содержание программы hello world
--------------------------------

.. index::
  hello World
  ключевые слова



Вот краткий список многих общих понятий, которые появились в этой короткой
программе:
Основная особенность: Каждый язык определяет свой синтаксис, основные типы, ключевые
слова, правила и т.д. Все это есть основные функции этого языка. Круглые скобки,
точки с запятой и такие слова, как main и void, расставляются в соответствии с правилами языка D. 
Они аналогичны правилам английского языка: подлежащее, глагол, знаки препинания, структура предложения и т.д.

**Библиотеки и функции:** Основные функции определяют только структуру языка. 
Они используются для определения функций и пользовательских типов данных, а те, в свою очередь, используются для создания библиотек.
Библиотеки - это коллекции повторно используемых программных частей, которые связываются с вашими программами, чтобы помочь им достичь своих целей.
writeln выше - это функция из стандартной библиотеке D. Он используется для печати строки
текста, как следует из его названия: write line.

**Модуль:** Содержимое библиотеки сгруппировано по типам задач, в решении которых они могут помочь. Такая группа называется модулем.
Единственным модулем, который использует эта программа, является std.stdio, который обрабатывает ввод и вывод данных.

**Символ и строка:** Выражения типа "Привет, мир!" называются строками, а элементы строк называются символами. Единственная строка в этой программе
содержит символы 'H', 'e' , '!' и другие.

**Порядок операций:** Программы выполняют свои задачи, используя операции в определенном порядке. Эти задачи начинаются с операций, которые записаны в
функции с именем main . Единственная операция в этой программе записывает "Hello world!". 

**Значение заглавных и строчных букв:** Вы можете выбрать для ввода любые символ внутри строк, но вы должны вводить другие символы точно так, как они
отображаются в программе. Это связано с тем, что в язык D различает прописные м строчные символы.
Например, writeln и Writeln - это два разных имени.

**Ключевое слово:** Специальные слова, которые являются частью основных функций языка, являются
ключевыми словами. Такие слова зарезервированы для самого языка и не могут использоваться для
каких-либо других целей в программе. В этой программе есть два ключевых слова:

#. import , который используется для введения модуля в программу;
#. void , что здесь означает "ничего не возвращать".

**Полный список общих ключевых слов**

* abstract
* alias
* align
* asm
* assert
* auto
* body
* bool
* break
* byte
* case
* cast
* catch
* cdouble
* cent
* cfloat
* char
* class
* const
* continue
* creal
* dchar
* debug
* default
* delegate
* delete ,
* deprecated
* do
* double
* else
* enum
* export
* extern
* false
* final
* finally
* float
* for
* foreach
* foreach_reverse
* function
* goto
* idouble
* if
* ifloat ,
* immutable
* import
* in
* inout
* int
* interface ,
* invariant
* ireal
* is
* lazy
* long
* macro
* mixin
* module
* new
* nothrow
* null
* out
* override
* package
* pragma
* private
* protected
* public
* pure
* real
* ref
* return
* scope
* shared
* short
* static
* struct
* super
* switch
* sybcronized
* template
* this
* throw
* true
* try
* typedef
* typeid
* typeof
* ubyte
* ucent
* uint
* ulong
* union
* unittest
* ushort
* version
* void
* volatile
* wchar
* while
* with
* __FILE__
* __FILE_FULL_PATH__
* __MODULE__ ,
* __LINE__
* __FUNCTION__ ,
* __PRETTY_FUNCTION__,
* __gshared
* __traits
* __vector
* __parameters .


Мы рассмотрим эти ключевые слова в следующих главах, за исключением

* asm
* __vector

рассмотрение которых   выходят за рамки этой книги;

* body
* delete
* typedef и
* volatile


считаются устаревшими, а macro в настоящее время не используется D.


Упражнения
---------------

#. Заставьте программу выводить что-то другое.
#. Измените программу так, чтобы она выводила более одной строки. Вы можете сделать это, добавив в программу еще одну строку writeln.
#. Попробуйте скомпилировать программу после внесения других изменений; например, удалите точку с запятой в конце строки с помощью writeln и увидите ошибку компиляции.
